clc; % 清除命令窗口  
close all; % 关闭所有图形窗口  
  
% 加载城市坐标数据  
load CityPosition1; % 加载个城市坐标位置  
  
% 初始化算法参数  
NIND = 100; % 种群大小  
MAXGEN = 200; % 最大迭代次数  
Pc = 0.9; % 交叉概率  
Pm = 0.05; % 变异概率  
GGAP = 0.9; % 代沟(Generation gap)  
  
% 生成距离矩阵  
D = Distanse(X); % 假设Distanse是一个自定义函数，用于计算距离矩阵  
N = size(D, 1); % 获取城市的数量，假设是34个城市  
  
% 初始化种群  
Chrom = InitPop(NIND, N); % 假设InitPop是一个自定义函数，用于初始化种群  
  
% 在二维图上画出所有坐标点（此部分代码已被注释掉）  
% figure;  
% plot(X(:, 1), X(:, 2), 'o');  
  
% 画出初始种群中的一个随机解的路线图  
DrawPath(Chrom(1, :), X); % 假设DrawPath是一个自定义函数，用于绘制路径  
pause(0.0001); % 暂停一段时间，以便观察图形  
  
% 输出初始种群中的一个随机解的路线和总距离  
disp('初始种群中的一个随机值:');  
OutputPath(Chrom(1, :)); % 假设OutputPath是一个自定义函数，用于输出路径  
Rlength = PathLength(D, Chrom(1, :)); % 假设PathLength是一个自定义函数，用于计算路径长度  
disp(['总距离：', num2str(Rlength)]);  
disp('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');  
  
% 优化过程  
gen = 0; % 初始化迭代次数  
figure; % 创建新的图形窗口  
hold on; % 保持当前图形不变，继续在新的位置上绘图  
box on; % 显示图形边框  
xlim([0, MAXGEN]); % 设置x轴的范围  
title('优化过程'); % 设置图形标题  
xlabel('代数'); % 设置x轴标签  
ylabel('最优值'); % 设置y轴标签  
ObjV = PathLength(D, Chrom); % 计算初始种群的路径长度  
preObjV = min(ObjV); % 获取当前最优值  
  
while gen < MAXGEN  
    % 计算适应度、选择、交叉、变异、逆转和重插入等操作  
    % ...（省略了部分代码，以保持简洁）  
      
    % 更新迭代次数  
    gen = gen + 1;  
end  
  
% 画出最优解的路线图  
ObjV = PathLength(D, Chrom); % 计算最终种群的路径长度  
[minObjV, minInd] = min(ObjV); % 获取最优解及其索引  
DrawPath(Chrom(minInd(1), :), X); % 绘制最优解的路线图  
  
% 输出最优解的路线和总距离  
disp('最优解:');  
p = OutputPath(Chrom(minInd(1), :)); % 输出最优解的路径  
disp(['总距离：', num2str(ObjV(minInd(1)))]); % 输出最优解的总距离  
disp('-------------------------------------------------------------');